import { App,createVNode, VNode ,render} from 'vue'
import Loading from './index.vue'
export default {
  install(app: App) {
    console.log('Loading', Loading)//
    const vnode:VNode = createVNode(Loading)
    console.log('vnode', vnode)//此时是虚拟DOM  component 是null  el是null  。。。。
    render(vnode,document.body)//通过render挂载到页面上之后就变成了真实DOM
    console.log('vnode', vnode)//挂载之后就是真实的DOM了
    //setup 里面的东西都在 component.setupState 里
    // console.log('vnode.component.setupState',vnode.component?.setupState)
    //类型“ComponentInternalInstance”上不存在属性“setupState”。
    //原因是 源码里面确实没有定义这个setupState  Vue就是不让用       但是setupState确实存在
    console.log('vnode.component?.exposed', vnode.component?.exposed)//这个是Vue让咱们用的
    //使用这个需要在插件中用defineExpose将需要的内容暴露出去

    // 暴露了之后就可以挂载到全局了
    app.config.globalProperties.$loading = {
      show: vnode.component?.exposed?.show,
      hide:vnode.component?.exposed?.hide
    }
  }
}